/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;


public class TipoCambio implements Serializable {
    private String base;
    private int valorBase;
    private String cambio;
    private double valorCambio;
    private boolean retorno;
    
    public TipoCambio() {
    }

    public String getBase() {
        return base;
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }


    public void setBase(String base) {
        this.base = base;
    }

    public int getValorBase() {
        return valorBase;
    }

    public void setValorBase(int valorBase) {
        this.valorBase = valorBase;
    }

    public String getCambio() {
        return cambio;
    }

    public void setCambio(String cambio) {
        this.cambio = cambio;
    }

    public double getValorCambio() {
        return valorCambio;
    }

    public void setValorCambio(double valorCambio) {
        this.valorCambio = valorCambio;
    }
    
    //registrar
     public static boolean registrarTipoCambio (TipoCambio a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_registrarTipoCambio "
                     +"(?,?,?,?,?)} ");
             st.setString(1,a.getBase());
             st.setDouble(2,a.getValorBase());
             st.setString(3,a.getCambio());
             st.setDouble(4,a.getValorCambio());
             st.registerOutParameter(5,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(5));
             if(a.isRetorno())
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
     
     //listar los tipos de cambio
     public static ArrayList<TipoCambio> getListarTipoCambio(){ 
     ArrayList<TipoCambio> arreglo = new ArrayList<TipoCambio>();
    if (arreglo.size()==0){         
        TipoCambio obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarTipoCambio()}");   
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new TipoCambio();
        obj.setBase(rs.getString("base"));
        obj.setValorBase(rs.getInt("valorBase"));
        obj.setCambio(rs.getString("cambio"));
        obj.setValorCambio(rs.getDouble("valorCambio"));
        arreglo.add(obj);
       } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arreglo;
    }
       //listar el tipo de cambio segun moneda 
     public static ArrayList<TipoCambio> getListarTipoCambioMoneda(TipoCambio a){ 
     ArrayList<TipoCambio> arreglo = new ArrayList<TipoCambio>();
    if (arreglo.size()==0){         
        TipoCambio obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarTipoCambioxMoneda(?)}");
    st.setString(1, a.getBase());
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new TipoCambio();
        obj.setBase(rs.getString("base"));
        obj.setValorBase(rs.getInt("valorBase"));
        obj.setCambio(rs.getString("cambio"));
        obj.setValorCambio(rs.getDouble("valorCambio"));
        arreglo.add(obj);
       } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arreglo;
    }
     
     //actualizar
     public static boolean actualizarTipoCambio (TipoCambio a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_actualizarTipoCambio "
                     +"(?,?,?,?)} ");
             st.setString(1,a.getBase());
             st.setString(2,a.getCambio());
             st.setDouble(3,a.getValorCambio());
             st.registerOutParameter(4,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(4));
             if(a.isRetorno())
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    }
     
}
